Cookie实现会话跟踪! - ITSTAR - 博客频道 - CSDN.NET

创建时间:2015/9/24 10:07
来源:http://blog.csdn.net/xh16319/article/details/8464319


分类: JSP 2013-01-04 14:11 928人阅读 评论(0) 收藏 举报

IT程序员开发必备-各类资源下载清单,史上最全IT资源,个人收藏总结!


服务器默认创建一个Cookie回传给用户:(Cookie cookie = new Cookie("JSESSIONID",session.getId());response.addCookie(cookie);)此cookie的默认生命周期为关闭浏览器cookie即销毁,所以当浏览器关闭后,使用cookie实现的回话跟踪应用(如购物)将会失效。

解决浏览器关闭,装载sessionid的cookie 失效的问题: 可以通过创建一个名为"JSESSIONID"的cookie,然后设置cookie的生命周期(cookie.setMaxAge())来设置cookie的失效时间,如下:

  1. package edu.session;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.PrintWriter;  
  5. import javax.servlet.ServletException;  
  6. import javax.servlet.http.Cookie;  
  7. import javax.servlet.http.HttpServlet;  
  8. import javax.servlet.http.HttpServletRequest;  
  9. import javax.servlet.http.HttpServletResponse;  
  10. import javax.servlet.http.HttpSession;  
  11.   
  12. public class BuyServlet extends HttpServlet {  
  13.   
  14.     public void doGet(HttpServletRequest request, HttpServletResponse response)  
  15.             throws ServletException, IOException {  
  16.          response.setCharacterEncoding("utf-8");  
  17.          response.setContentType("text/html;charset=utf-8");  
  18.          PrintWriter out = response.getWriter();  
  19.          HttpSession session = request.getSession();  
  20.         /** 
  21.          * 设置session的空闲失效时间有两种方式: 
  22.          *  1.在web.xml中设置: 
  23.          *     <session-config> 
  24.                    <session-timeout>2</session-timeout> 
  25.               </session-config>  
  26.             2.设置session的maxInactiveInterval属性,(session的 默认空闲失效时间为30分钟,即30分钟内不 
  27.                               访问服务器,session将自动销毁)如下:session.setMaxInactiveInterval(2*60); 
  28.                             也可以通过 session.invalidate();销毁session 
  29.          **/  
  30.          session.setAttribute("name""联想笔记本");  
  31.          /** 
  32.           *  session的原理是通过向浏览器发送存放sessionId的cookie来实现session的,而存放sessionId的cookie的默认 
  33.           *  生命为浏览器关闭cookie消亡,所以当用户关闭浏览器后,其购物车商品会消失,为避免这种情况,应设置存放 
  34.           *  sessionId的cookie的生命周期 
  35.           **/  
  36.          Cookie cookie = new Cookie("JSESSIONID", session.getId());  
  37.          cookie.setMaxAge(30*60);//设置放置sessionId的cookie的生命周期为30分钟  
  38.          cookie.setPath("/CookieAndSession");  
  39.          response.addCookie(cookie);  
  40.            
  41.     }  
  42. }  
如果用户禁用了cookie,则只能通过url重写的方式来实现回话跟踪。但是url重写的方式实现回话跟踪的不能解决浏览器关闭,无法获取原来的sessionid的问题,即不能解决浏览器关闭,回话失效的问题。关于使用url重写实现回话跟踪,见:URL重写实现会话跟踪


一般大型的电子商务网站,一般是使用cookie实现回话跟踪的,因为如果使用session来实现回话跟踪的话,对服务器的压力很大,导致服务器性能下降!

版权声明:本文为博主原创文章,未经博主允许不得转载。

.